const app = getApp();

Page({
  /**
   * 页面的初始数据
   */
  data: {
    userInfo: null,
    nickName: '',
    avatarUrl: '',
    isLoading: false,
    showAvatarSheet: false, // 控制头像选择操作表的显示
    avatarSheetItems: [
      { name: '从相册选择', icon: 'photo' },
      { name: '拍照', icon: 'camera' }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取用户信息
    this.getUserInfo();
  },

  /**
   * 获取用户信息
   */
  getUserInfo() {
    // 从全局获取用户信息
    const userInfo = app.globalData.userInfo;
    if (!userInfo) {
      wx.showToast({
        title: '未获取到用户信息',
        icon: 'none'
      });
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
      return;
    }

    this.setData({
      userInfo: userInfo,
      nickName: userInfo.nickName || '',
      avatarUrl: userInfo.avatarUrl || '/static/images/default/default-avatar.png'
    });
  },

  /**
   * 输入昵称
   */
  onInputNickname(e) {
    this.setData({
      nickName: e.detail.value
    });
  },

  /**
   * 显示头像选择菜单
   */
  showAvatarPicker() {
    // 直接显示微信原生的选择头像菜单
    wx.showActionSheet({
      itemList: ['从相册选择', '拍照'],
      success: (res) => {
        if (res.tapIndex === 0) {
          // 从相册选择
          this.chooseFromAlbum();
        } else if (res.tapIndex === 1) {
          // 拍照
          this.takePhoto();
        }
      }
    });
  },

  /**
   * 从相册选择图片
   */
  chooseFromAlbum() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        this.uploadAvatar(tempFilePath);
      },
      fail: (err) => {
        console.error('从相册选择图片失败', err);
      }
    });
  },

  /**
   * 拍照
   */
  takePhoto() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['camera'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        this.uploadAvatar(tempFilePath);
      },
      fail: (err) => {
        console.error('拍照失败', err);
        // 显示错误信息
        if (err.errMsg) {
          wx.showToast({
            title: '拍照失败: ' + err.errMsg,
            icon: 'none'
          });
        }
      }
    });
  },

  /**
   * 上传头像到云存储
   */
  uploadAvatar(filePath) {
    // 显示上传中
    wx.showLoading({
      title: '上传中...',
      mask: true
    });

    const fileName = `avatar_${Date.now()}${filePath.substring(filePath.lastIndexOf('.'))}`;
    
    wx.cloud.uploadFile({
      cloudPath: `avatars/${fileName}`,
      filePath: filePath,
      success: (res) => {
        const fileID = res.fileID;
        console.log('头像上传成功', fileID);
        
        // 更新头像URL
        this.setData({
          avatarUrl: fileID
        });
        
        wx.hideLoading();
        wx.showToast({
          title: '头像上传成功',
          icon: 'success'
        });
      },
      fail: (err) => {
        wx.hideLoading();
        console.error('头像上传失败', err);
        wx.showToast({
          title: '头像上传失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 保存资料
   */
  saveProfile() {
    const { nickName, avatarUrl, userInfo } = this.data;
    
    // 验证昵称
    if (!nickName.trim()) {
      wx.showToast({
        title: '昵称不能为空',
        icon: 'none'
      });
      return;
    }

    // 显示加载状态
    this.setData({ isLoading: true });
    wx.showLoading({
      title: '保存中...',
      mask: true
    });

    // 调用云函数更新用户信息
    wx.cloud.callFunction({
      name: 'updateUserInfo',
      data: {
        nickName: nickName,
        avatarUrl: avatarUrl
      },
      success: (res) => {
        console.log('更新用户信息成功', res.result);
        
        if (res.result && res.result.success) {
          // 更新全局用户信息
          const updatedUserInfo = {
            ...userInfo,
            nickName: nickName,
            avatarUrl: avatarUrl
          };
          
          app.globalData.userInfo = updatedUserInfo;
          
          // 保存到本地存储
          wx.setStorageSync('userInfo', JSON.stringify(updatedUserInfo));
          
          wx.hideLoading();
          wx.showToast({
            title: '资料更新成功',
            icon: 'success'
          });
          
          // 返回上一页
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
          
          // 刷新用户统计需要的标志
          app.globalData.userStatsNeedRefresh = true;
          wx.setStorageSync('userStatsNeedRefresh', true);
        } else {
          wx.hideLoading();
          wx.showToast({
            title: res.result ? res.result.message || '更新失败' : '更新失败',
            icon: 'none'
          });
          this.setData({ isLoading: false });
        }
      },
      fail: (err) => {
        console.error('调用云函数失败', err);
        wx.hideLoading();
        wx.showToast({
          title: '更新失败，请重试',
          icon: 'none'
        });
        this.setData({ isLoading: false });
      }
    });
  },

  /**
   * 取消编辑
   */
  cancelEdit() {
    wx.navigateBack();
  },

  /**
   * 关闭自定义选择菜单
   */
  closeAvatarSheet() {
    this.setData({
      showAvatarSheet: false
    });
  }
}); 